home *** CD-ROM | disk | FTP | other *** search
/ Personal Computer World 2009 February / PCWFEB09.iso / Software / Linux / Kubuntu 8.10 / kubuntu-8.10-desktop-i386.iso / casper / filesystem.squashfs / var / lib / dpkg / info / initscripts.postinst < prev    next >
Text File  |  2008-10-14  |  9KB  |  348 lines

  1. #! /bin/sh
  2. #
  3. # initscripts postinst
  4. #
  5.  
  6. set -e
  7.  
  8. case "$1" in
  9.   configure)
  10.     PREV_VER=$2
  11.     ;;
  12.   abort-upgrade|abort-remove|abort-deconfigure)
  13.     exit 0
  14.     ;;
  15. esac
  16.  
  17. umask 022
  18.  
  19. #
  20. # Function like update-rc.d but simpler & faster.
  21. # Usage: updatercd basename start|stop NN runlevel .
  22. #
  23. # Heuristic: use the real update-rc.d if file-rc or insserv is
  24. # detected, or if the /etc/rc2.d directory is not present.
  25. #
  26. updatercd() {
  27.  
  28.     [ -f /etc/init.d/$1 ] || return 0
  29.  
  30.     if \
  31.         [ -d /usr/share/file-rc/. ] \
  32.         || [ -d /usr/lib/file-rc/. ] \
  33.         || [ -d /usr/share/insserv/. ] \
  34.         || [ ! -d /etc/rc2.d/. ]
  35.     then
  36.         # Funniness on next line is because we are running with set -e
  37.         update-rc.d "$@" >/dev/null && return 0 || return $?
  38.     fi
  39.  
  40.     base=$1
  41.     shift
  42.  
  43.     tmp="$(echo /etc/rc?.d/[SK]??$base)"
  44.     case "$tmp" in
  45.         "/etc/rc?.d/[SK]??$base") : ;;
  46.         *) return ;;
  47.     esac
  48.  
  49.     while [ "$1" != "" ]
  50.     do
  51.         if [ "$1" = stop ]
  52.         then
  53.             tlet=K
  54.         else
  55.             tlet=S
  56.         fi
  57.         case "$2" in
  58.             ?) lev=0$2 ;;
  59.             *) lev=$2 ;;
  60.         esac
  61.         shift 2
  62.         while [ "$1" != "." ]
  63.         do
  64.             cd /etc/rc$1.d
  65.             ln -sf ../init.d/$base $tlet$lev$base
  66.             shift
  67.         done
  68.         shift
  69.     done
  70. }
  71.  
  72. chrooted() {
  73.   if [ -r /proc/1/root ]; then
  74.     return 1
  75.   fi
  76.   return 0
  77. }
  78.  
  79. #
  80. # Initialize rcS default file.
  81. #
  82. if [ ! -f /etc/default/rcS ]
  83. then
  84.     cp -p /usr/share/initscripts/default.rcS /etc/default/rcS
  85. else
  86.     # in Ubuntu we use /var/run and /var/lock tmpfses; transition it to the new
  87.     # settings in /etc/default/rcS
  88.     if dpkg --compare-versions "$PREV_VER" le-nl "2.86.ds1-56ubuntu1"
  89.     then
  90.             grep -wq RAMRUN /etc/default/rcS || echo 'RAMRUN=yes' >> /etc/default/rcS
  91.             grep -wq RAMLOCK /etc/default/rcS || echo 'RAMLOCK=yes' >> /etc/default/rcS
  92.     fi
  93. fi
  94.  
  95. #
  96. # In 2.86.ds1-7 the "single" script was moved.
  97. # We have to remove the old links _before_ we install new ones.
  98. #
  99. if dpkg --compare-versions "$PREV_VER" lt "2.86.ds1-7"
  100. then
  101.     update-rc.d -f single remove >/dev/null 2>&1 || :
  102. fi
  103.  
  104. # In 2.86.ds1-16, the mtab.sh and hostname.sh scripts were moved.
  105. if dpkg --compare-versions "$PREV_VER" lt "2.86.ds1-16"
  106. then
  107.     update-rc.d -f mtab.sh remove >/dev/null 2>&1 || :
  108.     update-rc.d -f hostname.sh remove >/dev/null 2>&1 || :
  109. fi
  110.  
  111. # In 2.86.ds1-21, the sendsigs script were moved, and in 2.86.ds1-35
  112. # it was moved back.
  113. if dpkg --compare-versions "$PREV_VER" lt "2.86.ds1-35"
  114. then
  115.     update-rc.d -f sendsigs remove >/dev/null 2>&1 || :
  116. fi
  117.  
  118. # In 2.86.ds1-56ubuntu1, the waitnfs.sh was renamed to mountnfs.sh to be in
  119. # sync with Debian again.
  120. if dpkg --compare-versions "$PREV_VER" le-nl "2.86.ds1-56ubuntu1"
  121. then
  122.     update-rc.d -f waitnfs.sh remove >/dev/null 2>&1 || :
  123. fi
  124.  
  125. #
  126. # Okay, we could do this with update-rc.d, but that would probably
  127. # be pretty slow. This way we win some speed.
  128. # DO NOT FOLLOW THIS EXAMPLE IN OTHER PACKAGES.
  129. #
  130. # Links in runlevel S
  131. #
  132. updatercd mountkernfs.sh         start 1 S .
  133. updatercd hostname.sh            start 2 S .
  134. updatercd mountdevsubfs.sh       start 11 S .
  135. #updatercd bootlogd               start 5 S .
  136. updatercd checkroot.sh           start 20 S .
  137. updatercd mtab.sh                start 22 S .
  138. updatercd checkfs.sh             start 30 S .
  139. updatercd mountall.sh            start 35 S .
  140. updatercd mountall-bootclean.sh  start 36 S .
  141. updatercd mountoverflowtmp       start 37 S . stop 63 0 6 .
  142. updatercd mountnfs.sh            start 45 S .
  143. updatercd mountnfs-bootclean.sh  start 46 S .
  144. updatercd bootmisc.sh            start 55 S .
  145. updatercd urandom                start 55 S . start 30 0 6 .
  146. #
  147. # Links in runlevels other than S
  148. #
  149. updatercd halt                   start 90 0 .
  150. updatercd reboot                 start 90 6 .
  151. updatercd umountroot             start 60 0 6 .
  152. updatercd umountfs               start 40 0 6 .
  153. updatercd umountnfs.sh           start 31 0 6 .
  154. updatercd sendsigs               start 20 0 6 .
  155.  
  156. updatercd killprocs              start 30 1 .
  157. updatercd single                 start 90 1 .
  158. updatercd rc.local               start 99 2 3 4 5 .
  159. updatercd rmnologin              start 99 2 3 4 5 .
  160. #updatercd stop-bootlogd-single   start 99 S .
  161. #updatercd stop-bootlogd          start 99 2 3 4 5 .
  162.  
  163. #
  164. # Remove scripts that were left behind by older glibc (<< 2.3.2.ds1-12)
  165. # versions. We have the same functionality in mount{kern,devsub}fs.sh 
  166. #
  167. #
  168. # In 2.86.ds1-10 the "mountvirtfs" script was replaced by
  169. # mountkernfs.sh and mountdevsubfs.sh.  It was removed completely in
  170. # 2.86.ds1-16.
  171. #
  172. for F in mountkernfs devpts.sh mountvirtfs
  173. do
  174.     rm -f /etc/init.d/$F
  175.     update-rc.d $F remove >/dev/null 2>&1 || :
  176. done
  177.  
  178. #
  179. # Create /var/run and /var/lock on the root partition to make sure
  180. # they are available when RAMRUN or RAMLOCK is enabled.
  181. # If mount fail (like in a vserver environment), just clean up and ignore
  182. # it.  The admins enabling RAMRUN and RAMLOCK will have to create the
  183. # directories themselves in this case.
  184. #
  185. if dpkg --compare-versions "$PREV_VER" lt "2.86.ds1-22" && ! chrooted
  186. then
  187.     # We need to quickly bind / to another location so we can make them
  188.     # just in case /var is a mountpoint or a symlink to one.
  189.     mkdir -p /.root
  190.     if mount -n --bind / /.root ; then
  191.         if [ -L /.root/var ] && [ ! -d /.root/var ] ; then
  192.             # No use trying if /var is a relative symlink.  It is not
  193.             # going to work.
  194.             :
  195.         else
  196.             mkdir -p /.root/var/run /.root/var/lock
  197.         fi
  198.         umount /.root
  199.     fi
  200.     rmdir /.root
  201. fi
  202.  
  203. #
  204. # When installing for the first time or upgrading from version before 2.86.ds1-27,
  205. # a reboot is needed to make the /lib/init/rw/ tmpfs available.  Flag this
  206. # using notify-reboot-required.  Not mounting it here as it creates problem
  207. # for debootstrap, vservers, pbuilder and cowbuilder.
  208. #
  209. if dpkg --compare-versions "$PREV_VER" lt "2.86.ds1-27" \
  210.  && [ -x /usr/share/update-notifier/notify-reboot-required ]; then
  211.     /usr/share/update-notifier/notify-reboot-required
  212. fi
  213.  
  214. #
  215. # Create mount point for spufs, and create spu system group
  216. #
  217. if mountpoint -q /proc && grep -qs '^cpu.*Cell' /proc/cpuinfo; then
  218.     if ! getent group spu >/dev/null; then
  219.         # the adduser package is priority important; cannot use addgroup
  220.         groupadd -K GID_MAX=1000 spu
  221.     fi
  222.     mkdir -p /spu
  223.     if ! mountpoint -q /spu; then
  224.         # No need to fail configuration if this isn't possible. Mount
  225.         # will still display an error. See LP #261490 and #251593.
  226.         mount -t spufs -ogid=spu spufs /spu || true
  227.     fi
  228. fi
  229.  
  230. #
  231. # Create initial log files
  232. #
  233. [ "$PREV_VER" ] || chmod 755 /var/log/fsck || :
  234. for F in /var/log/dmesg /var/log/boot /var/log/fsck/checkroot /var/log/fsck/checkfs
  235. do
  236.     if [ ! -f "$F" ] && touch "$F" >/dev/null 2>&1
  237.     then
  238.         echo "(Nothing has been logged yet.)" >| "$F"
  239.         chown root:adm "$F"
  240.         chmod 640 "$F"
  241.     fi
  242. done
  243.  
  244. #
  245. # Set up nologin symlink so that dynamic-login-disabling will work
  246. # (when DELAYLOGIN is set to "yes")
  247. #
  248. if [ ! -L /etc/nologin ] && [ ! -e /etc/nologin ]
  249. then
  250.     rm -f /var/lib/initscripts/nologin
  251.     ln -s /var/lib/initscripts/nologin /etc/nologin
  252. fi
  253.  
  254. #
  255. # Set up motd stuff, putting variable file in /var/run/
  256. #
  257. if [ ! -f /etc/motd.tail ]
  258. then
  259.     if [ -f /etc/motd ]
  260.     then
  261.         sed 1d /etc/motd > /etc/motd.tail
  262.         [ -s /etc/motd.tail ] || rm -f /etc/motd.tail
  263.     fi
  264. fi
  265. if [ ! -f /var/run/motd ]
  266. then
  267.     if [ -f /etc/motd ]
  268.     then
  269.         cat /etc/motd > /var/run/motd
  270.     else
  271.         :>/var/run/motd
  272.     fi
  273. fi
  274. if [ ! -L /etc/motd ]
  275. then
  276.     [ -f /etc/default/rcS ] && . /etc/default/rcS
  277.     if [ "$EDITMOTD" = no ]
  278.     then
  279.         cat /var/run/motd > /etc/motd.static
  280.         ln -sf motd.static /etc/motd
  281.     else
  282.         ln -sf /var/run/motd /etc/motd
  283.     fi
  284. fi
  285.  
  286. #
  287. # Mount kernel virtual filesystems...not.
  288. # This causes problems in pbuilder.
  289. #
  290. #
  291. #if [ -x /etc/init.d/mountkernfs.sh ]
  292. #then
  293. #    if which invoke-rc.d >/dev/null 2>&1
  294. #    then
  295. #        invoke-rc.d mountkernfs.sh start || :
  296. #    else
  297. #        /etc/init.d/mountkernfs.sh start
  298. #    fi
  299. #fi
  300.  
  301. #
  302. # Create /dev/pts, /dev/shm directories
  303. #
  304. if [ "$(uname -s)" = Linux ]
  305. then
  306.     #
  307.     # Only create /dev/{pts,shm} if /dev is on the
  308.     # root file system. If some package has mounted a
  309.     # seperate /dev (ramfs from udev, devfs) it is
  310.     # responsible for the presence of those subdirs.
  311.     #
  312.     if ! mountpoint -q /dev
  313.     then
  314.         [ -d /dev/pts ] || { mkdir --mode=755 /dev/pts ; chown root:root /dev/pts ; }
  315.         [ -d /dev/shm ] || { mkdir --mode=755 /dev/shm ; chown root:root /dev/shm ; }
  316.     fi
  317. fi
  318.  
  319. #
  320. # Create /etc/rc.local on first time install and when upgrading from
  321. # versions before "2.86.ds1-16"
  322. #
  323. if dpkg --compare-versions "$PREV_VER" lt "2.86.ds1-16"
  324. then
  325.     if [ ! -e /etc/rc.local ]; then
  326.         cat << EOF > /etc/rc.local
  327. #!/bin/sh -e
  328. #
  329. # rc.local
  330. #
  331. # This script is executed at the end of each multiuser runlevel.
  332. # Make sure that the script will "exit 0" on success or any other
  333. # value on error.
  334. #
  335. # In order to enable or disable this script just change the execution
  336. # bits.
  337. #
  338. # By default this script does nothing.
  339.  
  340. exit 0
  341. EOF
  342.         # make sure it's enabled by default.
  343.         chmod 755 /etc/rc.local
  344.     fi
  345. fi
  346.  
  347. :
  348.